package pagecode.pages.mantenimiento;

import java.util.ArrayList;

import javax.faces.component.UIColumn;
import javax.faces.component.UIData;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlCommandLink;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.component.html.HtmlForm;
import javax.faces.component.html.HtmlGraphicImage;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlPanelGroup;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;

import model.ComboModel;
import model.mantenimiento.ConfiguracionMultitablaModel;

import org.ajax4jsf.ajax.html.AjaxPoll;
import org.apache.log4j.Logger;
import org.apache.myfaces.custom.datascroller.HtmlDataScroller;

import pagecode.PageCodeBase;

import com.stefanini.pe.bbva.mbl.carga.in.to.Corporativa;
import com.stefanini.pe.bbva.mbl.carga.in.to.EstadoFormulario;
import com.stefanini.pe.bbva.mbl.in.utils.Constantes;
import com.stefanini.pe.framework.common.StringUtil;


public class ConfiguracionMultitablaBean extends PageCodeBase {

	private static Logger logger = Logger.getLogger(ConfiguracionMultitablaBean.class);
	
	protected ComboModel comboModel;
	
	//protected HtmlScriptCollector scriptCollector1;
	protected HtmlForm form1;
	protected HtmlGraphicImage image2;
	protected HtmlOutputText lblUsuario1;
	protected HtmlOutputText lblUsuario;
	protected HtmlOutputText lblFechaPrincipal;
	protected HtmlCommandLink lnkCerrarSession;
	protected HtmlOutputText lblCerrarSesion;
	protected HtmlCommandLink lnkRegresar;
	protected HtmlOutputText txthplRegresar;
	protected HtmlOutputText lblTitulo;
	/*protected HtmlScriptCollector scriptCollector2;
	protected HtmlPanelActionbar actionbar1;*/
	protected HtmlCommandButton btnNuevo;
	protected HtmlOutputText lblCodNiv;
	protected HtmlSelectOneMenu cbxTabla;
	protected HtmlDataTable egvConfiguracionMultitabla;
	protected HtmlOutputText headerElemento;
	protected HtmlOutputText headerDescCorta;
	protected HtmlOutputText headerDato1;
	protected HtmlOutputText headerDato2;
	protected HtmlOutputText headerDato3;
	protected HtmlOutputText headerDato5;
	protected HtmlOutputText lblElemento;
	protected UIColumn colDescCorta;
	protected HtmlOutputText lblDescCorta;
	protected UIColumn colDato1;
	protected HtmlOutputText lblDato1;
	protected UIColumn colDato2;
	protected HtmlOutputText lblDato2;
	protected UIColumn colDato3;
	protected HtmlOutputText lblTipoRegistro;
	protected UIColumn colDato5;
	protected HtmlOutputText lblDato3;
	protected UIColumn colModificar;
	protected HtmlCommandButton btnAbrir;
	protected UIColumn colElemento;
	protected UIColumn colDato4;
	protected HtmlOutputText headerDato4;
	protected HtmlOutputText lblDato4;

	protected ConfiguracionMultitablaModel configuracionMultitablaModel;

	protected HtmlCommandLink lnkInicio;

	protected HtmlOutputText txthplInicio;

	protected AjaxPoll pollFecha;

	protected HtmlOutputText lblFechaPrincipal_;

	protected AjaxPoll poll;

	protected HtmlOutputText estadoReproceso;

	protected HtmlOutputText headerDescLarga;

	protected HtmlPanelGroup getFechaActual;

	protected HtmlPanelGroup grid;

	protected HtmlGraphicImage imageColor;

	protected UIColumn colDescLarga;

	protected HtmlOutputText lblDescLarga;

	protected HtmlOutputText lblDato5;
	
	/*	Inicio: lpolanco - 25/05/2012	*/	
	private HtmlDataScroller dsConfiguracionMultiTabla;	
	private UIData dtListaConfiguracionMultiTabla;
	/*	Fin: lpolanco - 25/05/2012	*/	
	private String iniciar;
    
    public String getIniciar() {
            logger.info("Inicio onPageLoad ConfiguracionMultiTabla");
            onPageLoad(FacesContext.getCurrentInstance());
            return iniciar;
    }
    
    public void setIniciar(String iniciar) {
            this.iniciar = iniciar;
    }
	
	public void onPageLoad(FacesContext facescontext) {
		logger.info("Inicio");
		
        if (!this.isPostBack()) {
        	try {
        		this.getConfiguracionMultitablaModel().getEstadoFormulario().setEstadoActual(EstadoFormulario.BUSCAR);
        		this.getConfiguracionMultitablaModel().setLstElementos(new ArrayList());
        		
        		logger.info("/*** boolean0: "+this.getConfiguracionMultitablaModel().isBReloadConfiguracion());
        		
        		if(this.getConfiguracionMultitablaModel().isBReloadConfiguracion()){
        			
        			logger.info("/*** boolean1: "+this.getConfiguracionMultitablaModel().isBReloadConfiguracion());
        			logger.info("/*** strValue: "+this.getConfiguracionMultitablaModel().getStrValueSelect());
        			
        			this.getConfiguracionMultitablaModel().setLstElementosRendered(true);
        			if(this.getConfiguracionMultitablaModel().getStrValueSelect() != null){
	        			Corporativa corporativa = new Corporativa();
	        			corporativa.setCodTab(this.getConfiguracionMultitablaModel().getStrValueSelect());
	        			ArrayList lstElementos = (ArrayList) this.getConfiguracionMultitablaModel().getCorporativaService().selectByTab(corporativa);
	        			this.getConfiguracionMultitablaModel().setStrCodTabla(this.getConfiguracionMultitablaModel().getStrValueSelect());
	        			this.getConfiguracionMultitablaModel().setLstElementos(lstElementos);
	        			this.getConfiguracionMultitablaModel().setLstElementosRendered(true);
	    				this.getConfiguracionMultitablaModel().setStrError("");
	    				//this.getConfiguracionMultitablaModel().setStrValueSelect(null);
        			}else{
        				this.getConfiguracionMultitablaModel().setStrCodTabla(null);
        			}
        		}else{
        			this.getConfiguracionMultitablaModel().setLstElementosRendered(false);
        			this.getConfiguracionMultitablaModel().setStrValueSelect(null);
        			this.getConfiguracionMultitablaModel().setStrCodTabla(null);
        		}
        		//this.getConfiguracionMultitablaModel().setStrCodTabla("");
        		this.getConfiguracionMultitablaModel().setBReloadConfiguracion(false);
        	} catch (Exception e) {
				this.getConfiguracionMultitablaModel().setStrError(
						"Ocurrio un error al cargar los acccesos");
				logger.error(e.getMessage(), e);
			}	
        }
        
        logger.info("Fin");
    }
    
    private boolean isPostBack() {
    	return this.getFacesContext().getExternalContext().getRequestParameterMap().get("isPostBackProdFam") == null ? false : true;
    }
    
    public void handleCbxTablaValueChange(ValueChangeEvent valueChangedEvent) {
    	try {
    		logger.info("Inicio");
    		
    		if (!valueChangedEvent.getNewValue().toString().equals("")) {
    			Corporativa corporativa = new Corporativa();
    			corporativa.setCodTab(valueChangedEvent.getNewValue().toString());
    			ArrayList lstElementos = (ArrayList) this.getConfiguracionMultitablaModel().getCorporativaService().selectByTab(corporativa);
    			
    			/*	Inicio: lpolanco - 25/05/2012	*/	
    			this.getConfiguracionMultitablaModel().setStrValueSelect(valueChangedEvent.getNewValue().toString());
    			this.getDsConfiguracionMultiTabla().getUIData().setFirst(0);
    			/*	Fin: lpolanco - 25/05/2012	*/	    			
    			
    			this.getConfiguracionMultitablaModel().setLstElementos(lstElementos);
    			
    			if (lstElementos.size() > 0) {
    				
    				int len=this.getConfiguracionMultitablaModel().getLstElementos().size();    				
    				for(int i=0;i<len;i++){
    					Corporativa cor=(Corporativa)this.getConfiguracionMultitablaModel().getLstElementos().get(i);
    					cor.reset();
    				}
    				
    				this.getConfiguracionMultitablaModel().setLstElementosRendered(true);
    				this.getConfiguracionMultitablaModel().setStrError("");
    			} else {
    				this.getConfiguracionMultitablaModel().setLstElementosRendered(false);
    				this.getConfiguracionMultitablaModel().setStrError("No se encontro informacion para mostrar.");
    			}
    		} else {
    			this.getConfiguracionMultitablaModel().setLstElementos(null);
    			this.getConfiguracionMultitablaModel().setLstElementosRendered(false);
    		}
    		
    		logger.info("Fin");
    	} catch (Exception e) {
    		this.getConfiguracionMultitablaModel().setStrError(Constantes.MSJ_ERROR_INESPERADO);
    		logger.error(e.getMessage(), e);
		}
    }
    
    public String nuevo() {
    	try {
    		logger.info("Inicio");
    		
    		this.getConfiguracionMultitablaModel().setStrCodTabla("");
    		this.getConfiguracionMultitablaModel().setTipoFormulario("N");
    		this.getConfiguracionMultitablaModel().setCorporativa(new Corporativa());
    		this.getConfiguracionMultitablaModel().getEstadoFormulario().setEstadoActual(EstadoFormulario.NUEVO);
    		
    		logger.info("Fin");
    	} catch (Exception e) {
    		logger.error(e.getMessage(), e);
		}
    	return "nuevo";
    }
    
    public String editar() {
    	try {
    		logger.info("Inicio");
    		
    		this.getConfiguracionMultitablaModel().setStrError(StringUtil.Empty);
    		this.getConfiguracionMultitablaModel().setTipoFormulario("E");
        	this.getConfiguracionMultitablaModel().getEstadoFormulario().setEstadoActual(EstadoFormulario.ABRIR);
        	Corporativa corporativa = (Corporativa) this.getEgvConfiguracionMultitabla().getRowData();
        	this.getConfiguracionMultitablaModel().setCorporativa(corporativa);
        	
        	
        	
        	logger.info("Fin");
        	
        	return "editar";
    	} catch (Exception e) {
    		logger.error(e.getMessage(), e);
			this.getConfiguracionMultitablaModel().setStrError("Ocurrio un error al abrir el registro.");
			return null;
		}
    }
    
    public String eliminar() {
    	Corporativa corporativa = null;
    	
    	try {
    		logger.info("Inicio");
    		
    		corporativa = (Corporativa) this.getEgvConfiguracionMultitabla().getRowData();
    		this.getConfiguracionMultitablaModel().getCorporativaService().deleteByPrimaryKey(corporativa);
    		
    		ArrayList lstElementos = (ArrayList) this.getConfiguracionMultitablaModel().getCorporativaService().selectByTab(corporativa);
			this.getConfiguracionMultitablaModel().setLstElementos(lstElementos);
			
			logger.info("Fin");
    	} catch (Exception e) {
    		logger.error(e.getMessage(), e);
			this.getConfiguracionMultitablaModel().setStrError("Ocurrio un error al eliminar el registro.");
		}
    	return null;
    }
    
	/*protected HtmlScriptCollector getScriptCollector1() {
		if (scriptCollector1 == null) {
			scriptCollector1 = (HtmlScriptCollector) findComponentInRoot("scriptCollector1");
		}
		return scriptCollector1;
	}*/

	protected HtmlForm getForm1() {
		if (form1 == null) {
			form1 = (HtmlForm) findComponentInRoot("form1");
		}
		return form1;
	}

	protected HtmlGraphicImage getImage2() {
		if (image2 == null) {
			image2 = (HtmlGraphicImage) findComponentInRoot("image2");
		}
		return image2;
	}

	protected HtmlOutputText getLblUsuario1() {
		if (lblUsuario1 == null) {
			lblUsuario1 = (HtmlOutputText) findComponentInRoot("lblUsuario1");
		}
		return lblUsuario1;
	}

	protected HtmlOutputText getLblUsuario() {
		if (lblUsuario == null) {
			lblUsuario = (HtmlOutputText) findComponentInRoot("lblUsuario");
		}
		return lblUsuario;
	}

	protected HtmlOutputText getLblFechaPrincipal() {
		if (lblFechaPrincipal == null) {
			lblFechaPrincipal = (HtmlOutputText) findComponentInRoot("lblFechaPrincipal");
		}
		return lblFechaPrincipal;
	}

	protected HtmlCommandLink getLnkCerrarSession() {
		if (lnkCerrarSession == null) {
			lnkCerrarSession = (HtmlCommandLink) findComponentInRoot("lnkCerrarSession");
		}
		return lnkCerrarSession;
	}

	protected HtmlOutputText getLblCerrarSesion() {
		if (lblCerrarSesion == null) {
			lblCerrarSesion = (HtmlOutputText) findComponentInRoot("lblCerrarSesion");
		}
		return lblCerrarSesion;
	}

	protected HtmlCommandLink getLnkRegresar() {
		if (lnkRegresar == null) {
			lnkRegresar = (HtmlCommandLink) findComponentInRoot("lnkRegresar");
		}
		return lnkRegresar;
	}

	protected HtmlOutputText getTxthplRegresar() {
		if (txthplRegresar == null) {
			txthplRegresar = (HtmlOutputText) findComponentInRoot("txthplRegresar");
		}
		return txthplRegresar;
	}

	protected HtmlOutputText getLblTitulo() {
		if (lblTitulo == null) {
			lblTitulo = (HtmlOutputText) findComponentInRoot("lblTitulo");
		}
		return lblTitulo;
	}

	/*protected HtmlScriptCollector getScriptCollector2() {
		if (scriptCollector2 == null) {
			scriptCollector2 = (HtmlScriptCollector) findComponentInRoot("scriptCollector2");
		}
		return scriptCollector2;
	}

	protected HtmlPanelActionbar getActionbar1() {
		if (actionbar1 == null) {
			actionbar1 = (HtmlPanelActionbar) findComponentInRoot("actionbar1");
		}
		return actionbar1;
	}*/

	protected HtmlCommandButton getBtnNuevo() {
		if (btnNuevo == null) {
			btnNuevo = (HtmlCommandButton) findComponentInRoot("btnNuevo");
		}
		return btnNuevo;
	}

	protected HtmlOutputText getLblCodNiv() {
		if (lblCodNiv == null) {
			lblCodNiv = (HtmlOutputText) findComponentInRoot("lblCodNiv");
		}
		return lblCodNiv;
	}

	protected HtmlSelectOneMenu getCbxTabla() {
		if (cbxTabla == null) {
			cbxTabla = (HtmlSelectOneMenu) findComponentInRoot("cbxTabla");
		}
		return cbxTabla;
	}

	protected HtmlDataTable getEgvConfiguracionMultitabla() {
		if (egvConfiguracionMultitabla == null) {
			egvConfiguracionMultitabla = (HtmlDataTable) findComponentInRoot("egvConfiguracionMultitabla");
		}
		return egvConfiguracionMultitabla;
	}

	protected HtmlOutputText getHeaderElemento() {
		if (headerElemento == null) {
			headerElemento = (HtmlOutputText) findComponentInRoot("headerElemento");
		}
		return headerElemento;
	}

	protected HtmlOutputText getHeaderDescCorta() {
		if (headerDescCorta == null) {
			headerDescCorta = (HtmlOutputText) findComponentInRoot("headerDescCorta");
		}
		return headerDescCorta;
	}

	protected HtmlOutputText getHeaderDato1() {
		if (headerDato1 == null) {
			headerDato1 = (HtmlOutputText) findComponentInRoot("headerDato1");
		}
		return headerDato1;
	}

	protected HtmlOutputText getHeaderDato2() {
		if (headerDato2 == null) {
			headerDato2 = (HtmlOutputText) findComponentInRoot("headerDato2");
		}
		return headerDato2;
	}

	protected HtmlOutputText getHeaderDato3() {
		if (headerDato3 == null) {
			headerDato3 = (HtmlOutputText) findComponentInRoot("headerDato3");
		}
		return headerDato3;
	}

	protected HtmlOutputText getHeaderDato5() {
		if (headerDato5 == null) {
			headerDato5 = (HtmlOutputText) findComponentInRoot("headerDato5");
		}
		return headerDato5;
	}

	protected HtmlOutputText getLblElemento() {
		if (lblElemento == null) {
			lblElemento = (HtmlOutputText) findComponentInRoot("lblElemento");
		}
		return lblElemento;
	}

	protected UIColumn getColDescCorta() {
		if (colDescCorta == null) {
			colDescCorta = (UIColumn) findComponentInRoot("colDescCorta");
		}
		return colDescCorta;
	}

	protected HtmlOutputText getLblDescCorta() {
		if (lblDescCorta == null) {
			lblDescCorta = (HtmlOutputText) findComponentInRoot("lblDescCorta");
		}
		return lblDescCorta;
	}

	protected UIColumn getColDato1() {
		if (colDato1 == null) {
			colDato1 = (UIColumn) findComponentInRoot("colDato1");
		}
		return colDato1;
	}

	protected HtmlOutputText getLblDato1() {
		if (lblDato1 == null) {
			lblDato1 = (HtmlOutputText) findComponentInRoot("lblDato1");
		}
		return lblDato1;
	}

	protected UIColumn getColDato2() {
		if (colDato2 == null) {
			colDato2 = (UIColumn) findComponentInRoot("colDato2");
		}
		return colDato2;
	}

	protected HtmlOutputText getLblDato2() {
		if (lblDato2 == null) {
			lblDato2 = (HtmlOutputText) findComponentInRoot("lblDato2");
		}
		return lblDato2;
	}

	protected UIColumn getColDato3() {
		if (colDato3 == null) {
			colDato3 = (UIColumn) findComponentInRoot("colDato3");
		}
		return colDato3;
	}

	protected HtmlOutputText getLblTipoRegistro() {
		if (lblTipoRegistro == null) {
			lblTipoRegistro = (HtmlOutputText) findComponentInRoot("lblTipoRegistro");
		}
		return lblTipoRegistro;
	}

	protected UIColumn getColDato5() {
		if (colDato5 == null) {
			colDato5 = (UIColumn) findComponentInRoot("colDato5");
		}
		return colDato5;
	}

	protected HtmlOutputText getLblDato3() {
		if (lblDato3 == null) {
			lblDato3 = (HtmlOutputText) findComponentInRoot("lblDato3");
		}
		return lblDato3;
	}

	protected UIColumn getColModificar() {
		if (colModificar == null) {
			colModificar = (UIColumn) findComponentInRoot("colModificar");
		}
		return colModificar;
	}

	protected HtmlCommandButton getBtnAbrir() {
		if (btnAbrir == null) {
			btnAbrir = (HtmlCommandButton) findComponentInRoot("btnAbrir");
		}
		return btnAbrir;
	}

	protected UIColumn getColElemento() {
		if (colElemento == null) {
			colElemento = (UIColumn) findComponentInRoot("colElemento");
		}
		return colElemento;
	}

	protected UIColumn getColDato4() {
		if (colDato4 == null) {
			colDato4 = (UIColumn) findComponentInRoot("colDato4");
		}
		return colDato4;
	}

	protected HtmlOutputText getHeaderDato4() {
		if (headerDato4 == null) {
			headerDato4 = (HtmlOutputText) findComponentInRoot("headerDato4");
		}
		return headerDato4;
	}

	protected HtmlOutputText getLblDato4() {
		if (lblDato4 == null) {
			lblDato4 = (HtmlOutputText) findComponentInRoot("lblDato4");
		}
		return lblDato4;
	}
	
	/**
     * @managed-bean true
     */
    public ComboModel getComboModel() {
        if (comboModel == null) {
            comboModel = (ComboModel) getFacesContext().getApplication().createValueBinding("#{comboModel}").getValue(getFacesContext());
        }
        return comboModel;
    }

    /**
     * @managed-bean true
     */
    public void setComboModel(ComboModel comboModel) {
        this.comboModel = comboModel;
    }

	/** 
	 * @managed-bean true
	 */
	public ConfiguracionMultitablaModel getConfiguracionMultitablaModel() {
		if (configuracionMultitablaModel == null) {
			configuracionMultitablaModel = (ConfiguracionMultitablaModel) getFacesContext()
					.getApplication().createValueBinding(
							"#{configuracionMultitablaModel}").getValue(
							getFacesContext());
		}
		return configuracionMultitablaModel;
	}

	/** 
	 * @managed-bean true
	 */
	public void setConfiguracionMultitablaModel(
			ConfiguracionMultitablaModel configuracionMultitablaModel) {
		this.configuracionMultitablaModel = configuracionMultitablaModel;
	}

	protected HtmlCommandLink getLnkInicio() {
		if (lnkInicio == null) {
			lnkInicio = (HtmlCommandLink) findComponentInRoot("lnkInicio");
		}
		return lnkInicio;
	}

	protected HtmlOutputText getTxthplInicio() {
		if (txthplInicio == null) {
			txthplInicio = (HtmlOutputText) findComponentInRoot("txthplInicio");
		}
		return txthplInicio;
	}

	protected AjaxPoll getPollFecha() {
		if (pollFecha == null) {
			pollFecha = (AjaxPoll) findComponentInRoot("pollFecha");
		}
		return pollFecha;
	}

	protected HtmlOutputText getLblFechaPrincipal_() {
		if (lblFechaPrincipal_ == null) {
			lblFechaPrincipal_ = (HtmlOutputText) findComponentInRoot("lblFechaPrincipal_");
		}
		return lblFechaPrincipal_;
	}

	protected AjaxPoll getPoll() {
		if (poll == null) {
			poll = (AjaxPoll) findComponentInRoot("poll");
		}
		return poll;
	}

	protected HtmlOutputText getEstadoReproceso() {
		if (estadoReproceso == null) {
			estadoReproceso = (HtmlOutputText) findComponentInRoot("estadoReproceso");
		}
		return estadoReproceso;
	}

	protected HtmlOutputText getHeaderDescLarga() {
		if (headerDescLarga == null) {
			headerDescLarga = (HtmlOutputText) findComponentInRoot("headerDescLarga");
		}
		return headerDescLarga;
	}

	protected HtmlPanelGroup getGetFechaActual() {
		if (getFechaActual == null) {
			getFechaActual = (HtmlPanelGroup) findComponentInRoot("getFechaActual");
		}
		return getFechaActual;
	}

	protected HtmlPanelGroup getGrid() {
		if (grid == null) {
			grid = (HtmlPanelGroup) findComponentInRoot("grid");
		}
		return grid;
	}

	protected HtmlGraphicImage getImageColor() {
		if (imageColor == null) {
			imageColor = (HtmlGraphicImage) findComponentInRoot("imageColor");
		}
		return imageColor;
	}

	protected UIColumn getColDescLarga() {
		if (colDescLarga == null) {
			colDescLarga = (UIColumn) findComponentInRoot("colDescLarga");
		}
		return colDescLarga;
	}

	protected HtmlOutputText getLblDescLarga() {
		if (lblDescLarga == null) {
			lblDescLarga = (HtmlOutputText) findComponentInRoot("lblDescLarga");
		}
		return lblDescLarga;
	}

	protected HtmlOutputText getLblDato5() {
		if (lblDato5 == null) {
			lblDato5 = (HtmlOutputText) findComponentInRoot("lblDato5");
		}
		return lblDato5;
	}
	
	/*	Inicio: lpolanco - 25/05/2012	*/
	/**
	 * @return the dsConfiguracionMultiTabla
	 */
	public HtmlDataScroller getDsConfiguracionMultiTabla() {
		return dsConfiguracionMultiTabla;
	}

	/**
	 * @param dsConfiguracionMultiTabla the dsConfiguracionMultiTabla to set
	 */
	public void setDsConfiguracionMultiTabla(
			HtmlDataScroller dsConfiguracionMultiTabla) {
		this.dsConfiguracionMultiTabla = dsConfiguracionMultiTabla;
	}
	/*	Fin: lpolanco - 25/05/2012	*/

	/**
	 * @return the dtListaConfiguracionMultiTabla
	 */
	public UIData getDtListaConfiguracionMultiTabla() {
		return dtListaConfiguracionMultiTabla;
	}

	/**
	 * @param dtListaConfiguracionMultiTabla the dtListaConfiguracionMultiTabla to set
	 */
	public void setDtListaConfiguracionMultiTabla(
			UIData dtListaConfiguracionMultiTabla) {
		this.dtListaConfiguracionMultiTabla = dtListaConfiguracionMultiTabla;
	}	
}
